This invention relates generally to analysis of program code and, more specifically, relates to analysis of program code accessing sensitive system resources having private data of a user.
In recent years, technology is gravitating strongly towards mobile and mobile/cloud computing architectures. Users enjoy the ability to run application and perform computations anytime and anywhere and also have constant access to their data and resources. At the same time, threats to privacy are on the rise. Applications (typically called “apps”) installed by the user, e.g. on a mobile device like a smartphone or a tablet, may make undesirable use of private information. This could be in support of ad content, analytics, social computing, and the like.
As an example, there is a flashlight application, available on Google Play, which requires access to the Internet, the mobile device's state, and the like. These are not just declared permissions that got into this application's manifest by mistake, but are actually used by the application. As is known, the manifest file presents essential information about an app to the operating system, information the system must have before the system can run any of the application's code. The manifest, in particular, declares the permissions the application must have in order to access protected parts of the API (Application Programming Interface). In example of the flashlight application, the application may not need access to sensitive system resources such as the Internet or mobile device's state.
This creates a challenge for the user. On the one hand, the user would like to minimize access to sensitive system resources by an app to narrow down the probability of private data leakage (e.g., if the app sends the user's location to some third-party advertisement website). On the other hand, in some cases, apps actually use sensitive information to optimize their core behavior, e.g., in the case of social computing or in the case of freemium apps. For freemium apps, the app may be free initially but additional functionality costs money. These apps may show advertisements to the user while the user has not paid for the additional functionality. The critical piece of information is not which permissions the app requires, but how the app is utilizing the permissions the app has been granted.